home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / DJLSR111.ZIP / libsrc / c / gen / getgrent.c < prev    next >
C/C++ Source or Header  |  1993-09-26  |  1KB  |  83 lines

  1. /*
  2.   (c) Copyright 1992 Eric Backus
  3.  
  4.   This software may be used freely so long as this copyright notice is
  5.   left intact.  There is no warrantee on this software.
  6. */
  7.  
  8. #include <grp.h>
  9. #include <string.h>        /* For strcmp() */
  10. #include <stdlib.h>        /* For getenv(), getgid() */
  11.  
  12. static struct group    gr;
  13. static char        *null_ptr = NULL;
  14. static int              counter = 0;
  15.  
  16. static void
  17. fill_in()
  18. {
  19.     char    *p;
  20.  
  21.     p = getenv("GROUP");
  22.     if (p)
  23.     gr.gr_name = p;
  24.     else
  25.     gr.gr_name = "other";
  26.  
  27.     gr.gr_passwd = "*";
  28.     gr.gr_gid = getgid();
  29.     gr.gr_mem = &null_ptr;
  30. }
  31.  
  32. struct group *
  33. getgrent(void)
  34. {
  35.     if (counter == 0)
  36.     {
  37.     counter++;
  38.     fill_in();
  39.     return &gr;
  40.     }
  41.     return NULL;
  42. }
  43.  
  44. struct group *
  45. fgetgrent(FILE *f)
  46. {
  47.     if (counter == 0)
  48.     {
  49.     counter++;
  50.     fill_in();
  51.     return &gr;
  52.     }
  53.     return NULL;
  54. }
  55.  
  56. struct group *
  57. getgrgid(int gid)
  58. {
  59.     fill_in();
  60.     if (gr.gr_gid == gid) return &gr;
  61.     return NULL;
  62. }
  63.  
  64. struct group *
  65. getgrnam(char *name)
  66. {
  67.     fill_in();
  68.     if (strcmp(gr.gr_name, name) == 0) return &gr;
  69.     return NULL;
  70. }
  71.  
  72. void
  73. setgrent(void)
  74. {
  75.   counter = 0;
  76. }
  77.  
  78. void
  79. endgrent(void)
  80. {
  81.   counter = 0;
  82. }
  83.